# -*- coding: utf-8 -*-

# === ユーザーマスタ管理画面コントローラ
class Admin::UsersController < Admin::AdminController
  # === ユーザーマスタの一覧画面表示
  def index
    @admin_users = User.all
  end

  # === 個別ユーザーの詳細表示
  # プロフィールの表示も行う。
  def show
    @admin_user = User.find(params[:id])
    @profile = @admin_user.profile
  end

  # === 招待を伴わない新規ユーザー登録フォームの表示
  def new
    @admin_user = User.new
  end

  # === 既存ユーザー情報編集フォームの表示
  # ユーザー名・パスワードの変更が可能
  def edit
    @admin_user = User.find(params[:id])
  end

  # === 招待を伴わない新規ユーザー登録実行
  def create
    @admin_user = User.new(params[:user])

    if @admin_user.save
      setting = Setting.new(:message_format_type => "plain",
                            :blog_format_type => "markdown")
      setting.user = @admin_user
      profile = Profile.new(:permissions => "none")
      profile.user = @admin_user
      if setting.save && profile.save
        redirect_to([:admin, @admin_user], :notice => 'ユーザー情報を登録しました。')
      else
        raise "プロフィールもしくは個人設定の作成に失敗しました。"
      end
    else
      render :action => "new"
    end
  end

  # === 既存ユーザー情報の更新実行
  def update
    @admin_user = User.find(params[:id])

    if @admin_user.update_attributes(params[:user])
      redirect_to([:admin, @admin_user], :notice => 'ユーザー情報を更新しました。')
    else
      render :action => "edit"
    end
  end

  # === ユーザーの強制退会処理
  # TODO: 実レコードの強制削除。関連レコードが全てアソシエーションに沿って正しく
  #       削除されているかどうか確認のこと。
  def destroy
    @admin_user = User.find(params[:id])
    @admin_user.destroy
    redirect_to(admin_users_url, :notice => 'ユーザー情報を削除しました。')
  end
end
